package com.ygqh.baby.service;

import com.ygqh.baby.ao.QueryInfo;
import com.ygqh.baby.ao.ResultSet;
import com.ygqh.baby.po.YgProduct;
import com.ygqh.baby.po.YgProductPackDetail;

import java.util.Date;
import java.util.List;

/**
 * @author admin
 */
public interface YgProductPackDetailService {


    List<YgProductPackDetail> find();

    int findCount();

    YgProductPackDetail findById(Long id);

    int save(YgProductPackDetail ygProductPackDetail);

    int update(YgProductPackDetail ygProductPackDetail);

    int updateProductPackDetail(Long packId, Long[] productIds, String updateBy);


    int saveOrUpdate(YgProductPackDetail ygProductPackDetail);

    ResultSet<YgProductPackDetail> search(QueryInfo queryInfo, String q);

    /**
     * 获取参与其他自选包的商品id
     *
     * 
     * @param uncludedPackId 不包含的自选包id
     * @param productIds     参与判断的商品Ids
     * @param startDate      开始时间
     * @param endDate        结束时间
     * @return List<Long>
     */
    List<Long> getProductIdsInOtherPack(Long uncludedPackId, Long[] productIds, Date startDate, Date endDate);


    /**
     * 获取参与自选包活动的商品id集
     *
     * @param packId 自选包id
     * @return List<Long>
     */
    List<Long> findProductIdsByPackId(Long packId);

    /**
     * 添加自选包明细
     *
     * @param packId     自选包id
     * @param productIds 自选包商品集
     * @param createBy   创建人
     * @return int
     */
    int addProductPackDetail(Long packId, Long[] productIds, String createBy);

    /**
     * 获取自选商品信息
     *
     * @param packId
     * @return
     */
    List<YgProduct> findProductByBack(Long packId);

    /**
     * 按明细id删除
     *
     * @param detailId 明细id
     * @param deleteBy 删除人
     * @return int
     */
    int deleteByDetailId(Long detailId, String deleteBy);
}
